//
//  GNStatusListViewModel.swift
//  SinaWeChat
//
//  Created by mac on 15/12/10.
//  Copyright © 2015年 mac. All rights reserved.
//

import UIKit

class GNStatusListViewModel: NSObject {
    
    
    // 模型数据就封装到这个地方,控制器不需要关心 model 的存储
    // 装有模型的数组
    var statusList:[GNStatusViewModel]?
    
    /// 加载微博数据
    // 用于告诉外界,当前请求成功与失败信息
    
    
    //应当在此处添加上一个参数判断是否是上啦加载或者是下拉刷新,以此来拼接不同形式的数组
    func loadData(isPullUp:Bool,complete: (isSuccess: Bool,count:Int)->()){
        
        //上拉加载所需要的数据,如果 isPullUp 是true,代表是上拉加载,就取当前数组最后一个元素的id传给服务器
        var maxId = isPullUp == true ? (statusList?.last?.status?.id ?? 0) : 0
        // 因为,其接口是返回比 maxId 小或等于max_id 的微博,为了避免重复数据,所以直接减1
        if maxId > 0 {
            maxId -= 1
        }
        //下拉刷新用的sinceId
        let sinceId = isPullUp == true ? 0 : (statusList?.first?.status?.id ?? 0)
        
        /// 加载微博数据
        // 用于告诉外界,当前请求成功与失败信息
<<<<<<< HEAD
        GNNetworkingTools.shareTools.loadStatus(GNUserAccountViewModel.sharedAccount.accessToken!,sinceId:sinceId, maxid: maxId) { (response, error) -> () in
=======
        GNNetworkingTools.shareTools.loadStatus(GNUserAccountViewModel.sharedAccount.accessToken!,sinceId:sinceId, maxId: maxId) { (response, error) -> () in
>>>>>>> 009be840054e3af11221fb27da600fe2ee052d08
            if error != nil {
                print("\(error)")
                // 加载失败
                complete(isSuccess: false,count: 0)
                return
            }
            // 执行到这一步,就代表数据请求回来了
            
            guard let result = response as? [String: AnyObject] else {
                print("返回的数据不是一个字典")
                return
            }
            
            // 一个字典数据
            guard let statusDicts = result["statuses"] as? [[String: AnyObject]] else {
                print("没有statuses")
                return
            }
            var tempArray = [GNStatusViewModel]()
            
            // 遍历数组,转成模型
            for value in statusDicts {
                let status = GNStatus(dict: value)
                tempArray.append(GNStatusViewModel(status: status))
            }
            
            print("加载回来的数量\(tempArray.count)")
            if self.statusList == nil {
                self.statusList = [GNStatusViewModel]()
            }
            
            //如果是上啦加载   //在此处拼接新的返回数组
            if isPullUp {
                //拼接到数组后边
                self.statusList = self.statusList! + tempArray
            }else{
                //下拉
                //拼接到数组前面
                self.statusList = tempArray + self.statusList!
            }
            
            complete(isSuccess: true,count: tempArray.count)
            
            
            
        }
    }
    
    
    
}
